home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qbsnip.zip / CMOSSTAT.BAS < prev    next >
BASIC Source File  |  1997-06-20  |  5KB  |  194 lines

  1. 'Read CMOS State
  2. 'by John Woodgate
  3. 'January 13, 1997
  4.  
  5. 'Modified slightly by Tika Carr (t.carr@pobox.com) on June 20, 1997
  6.  
  7. DEFINT A-Z
  8.  
  9. DECLARE FUNCTION CMOSBattery% ()
  10. DECLARE FUNCTION BitOn% (Which%, IntVal%)
  11. DECLARE FUNCTION DriveType% (Drv%)
  12. DECLARE FUNCTION Hex2Bin$ (Hcs$)
  13. DECLARE FUNCTION TotalMem% ()
  14.  
  15. DIM Day$(1 TO 7)
  16. Day$(1) = "Sunday": Day$(2) = "Monday": Day$(3) = "Tuesday"
  17. Day$(4) = "Wednesday": Day$(5) = "Thursday": Day$(6) = "Friday"
  18. Day$(7) = "Saturday"
  19.  
  20. DIM Month$(1 TO 12)
  21. Month$(1) = "January": Month$(2) = "February": Month$(3) = "March"
  22. Month$(4) = "April": Month$(5) = "May": Month$(6) = "June"
  23. Month$(7) = "July": Month$(8) = "August": Month$(9) = "September"
  24. Month$(10) = "October": Month$(11) = "November": Month$(12) = "December"
  25.  
  26. CLS
  27.  
  28. '**** Contents of CMOS (Hex Dump) ****
  29. PRINT "CMOS Contents:"
  30. FOR i = 0 TO &H7F: OUT &H70, i: PRINT USING "\   \"; HEX$(INP(&H71)); : NEXT
  31.  
  32.  
  33. '**** CMOS Battery State ****
  34. PRINT " ": PRINT "CMOS Battery State: ";
  35. IF CMOSBattery% THEN PRINT "Good"; :  ELSE PRINT "Battery low";
  36. PRINT
  37.  
  38. '**** List Floppy Drives Installed ****
  39. FOR c = 1 TO 2
  40.  k = DriveType(c)
  41.  PRINT "Drive " + CHR$(c + 64) + ": ";
  42.  SELECT CASE k
  43.   CASE 0: A$ = "None"
  44.   CASE 1: A$ = "5" + CHR$(172) + " 360K"
  45.   CASE 2: A$ = "5" + CHR$(172) + " 1.2M"
  46.   CASE 3: A$ = "3" + CHR$(171) + " 720K"
  47.   CASE 4: A$ = "3" + CHR$(171) + " 1.44M"
  48.  END SELECT
  49.  PRINT A$
  50. NEXT: PRINT
  51.  
  52. '**** List Hard Drives Installed ****
  53. PRINT "Hard Disk 0 Type:"; : OUT &H70, &H19: B = INP(&H71)
  54. IF B <> 0 THEN : PRINT B:  ELSE : PRINT " Not Installed"
  55. PRINT "Hard Disk 1 Type:"; : OUT &H70, &H1A: B = INP(&H71)
  56. IF B <> 0 THEN : PRINT B:  ELSE PRINT " Not Installed"
  57. PRINT
  58.  
  59. '**** Conventional Memory Size ****
  60. OUT &H70, &H15: B = INP(&H71): OUT &H70, &H16: B1 = INP(&H71)
  61. PRINT "Base Memory:"; RTRIM$(STR$(CVI(CHR$(B) + CHR$(B1)))); "K"
  62.  
  63. '**** Extended Memory Size ****
  64. OUT &H70, &H17: B = INP(&H71): OUT &H70, &H18: B1 = INP(&H71)
  65. PRINT "Extended Memory:"; RTRIM$(STR$(CVI(CHR$(B) + CHR$(B1)))); "K";
  66. PRINT " (~"; VAL(RTRIM$(STR$(CVI(CHR$(B) + CHR$(B1))))) \ 1024; "MB)": PRINT
  67.  
  68. '**** Total System Memory ****
  69. PRINT "Total System Memory:"; RTRIM$(STR$(TotalMem)); "K";
  70. PRINT "  (~"; VAL(RTRIM$(STR$(TotalMem))) \ 1024; "MB)": PRINT
  71.  
  72. '**** Date ****
  73. OUT &H70, &H6: A = INP(&H71)
  74. DT$ = Day$(A) + ", " + Month$(VAL(LEFT$(DATE$, 2))) + " "
  75. DT$ = DT$ + MID$(DATE$, 4, 2) + ", " + RIGHT$(DATE$, 4)
  76. PRINT DT$; "  ";
  77.  
  78. '**** Current Time ****
  79. DO
  80.  OUT &H70, 4: hr = VAL(HEX$(INP(&H71)))
  81.  OUT &H70, 2: mn = VAL(HEX$(INP(&H71)))
  82.  OUT &H70, 0: sc = VAL(HEX$(INP(&H71)))
  83.  LOCATE , 40: IF hr < 12 THEN Ex$ = " AM":  ELSE Ex$ = " PM"
  84.  IF hr = 0 THEN hr = 12
  85.  IF hr > 12 THEN hr = hr - 12
  86.  PRINT USING "##:##:##"; hr; mn; sc; : PRINT Ex$;
  87. LOOP UNTIL LEN(INKEY$)
  88.  
  89. FUNCTION BitOn (Which, IntVal)
  90.  
  91. BitOn = 0
  92. SELECT CASE Which
  93.  CASE 1: IF (IntVal AND 128) THEN BitOn = (-1)
  94.  CASE 2: IF (IntVal AND 64) THEN BitOn = (-1)
  95.  CASE 3: IF (IntVal AND 32) THEN BitOn = (-1)
  96.  CASE 4: IF (IntVal AND 16) THEN BitOn = (-1)
  97.  CASE 5: IF (IntVal AND 8) THEN BitOn = (-1)
  98.  CASE 6: IF (IntVal AND 4) THEN BitOn = (-1)
  99.  CASE 7: IF (IntVal AND 2) THEN BitOn = (-1)
  100.  CASE 8: IF (IntVal AND 1) THEN BitOn = (-1)
  101.  CASE 9: IF (IntVal AND (-32768)) THEN BitOn = (-1)
  102.  CASE 10: IF (IntVal AND 16384) THEN BitOn = (-1)
  103.  CASE 11: IF (IntVal AND 8192) THEN BitOn = (-1)
  104.  CASE 12: IF (IntVal AND 4096) THEN BitOn = (-1)
  105.  CASE 13: IF (IntVal AND 2048) THEN BitOn = (-1)
  106.  CASE 14: IF (IntVal AND 1024) THEN BitOn = (-1)
  107.  CASE 15: IF (IntVal AND 512) THEN BitOn = (-1)
  108.  CASE 16: IF (IntVal AND 256) THEN BitOn = (-1)
  109. END SELECT
  110. END FUNCTION
  111.  
  112. FUNCTION CMOSBattery%
  113.  
  114. OUT &H70, &HD
  115. B% = INP(&H71)
  116. c = BitOn%(1, B%)
  117. CMOSBattery% = c
  118. END FUNCTION
  119.  
  120. FUNCTION DriveType% (Drv%)
  121.  
  122. OUT &H70, &H10
  123. B% = INP(&H71)
  124. IF Drv% = 1 THEN
  125.  t$ = LEFT$(Hex2Bin$(LTRIM$(RTRIM$(HEX$(B%)))), 4)
  126. ELSE
  127.  t$ = MID$(Hex2Bin$(LTRIM$(RTRIM$(HEX$(B%)))), 5, 4)
  128. END IF
  129. IF t$ = "0001" THEN DriveType% = 1
  130. IF t$ = "0010" THEN DriveType% = 2
  131. IF t$ = "0011" THEN DriveType% = 3
  132. IF t$ = "0100" THEN DriveType% = 4
  133. END FUNCTION
  134.  
  135. FUNCTION Hex2Bin$ (Hcs$)
  136.  
  137. Hcs$ = UCASE$(Hcs$)
  138. lc = LEN(Hcs$)
  139. FOR x = 1 TO lc
  140.  SELECT CASE MID$(Hcs$, x, 1)
  141.   CASE "0"
  142.    Out$ = Out$ + "0000"
  143.   CASE "1"
  144.    Out$ = Out$ + "0001"
  145.   CASE "2"
  146.    Out$ = Out$ + "0010"
  147.   CASE "3"
  148.    Out$ = Out$ + "0011"
  149.   CASE "4"
  150.    Out$ = Out$ + "0100"
  151.   CASE "5"
  152.    Out$ = Out$ + "0101"
  153.   CASE "6"
  154.    Out$ = Out$ + "0110"
  155.   CASE "7"
  156.    Out$ = Out$ + "0111"
  157.   CASE "8"
  158.    Out$ = Out$ + "1000"
  159.   CASE "9"
  160.    Out$ = Out$ + "1001"
  161.   CASE "A"
  162.    Out$ = Out$ + "1010"
  163.   CASE "B"
  164.    Out$ = Out$ + "1011"
  165.   CASE "C"
  166.    Out$ = Out$ + "1100"
  167.   CASE "D"
  168.    Out$ = Out$ + "1101"
  169.   CASE "E"
  170.    Out$ = Out$ + "1110"
  171.   CASE "F"
  172.    Out$ = Out$ + "1111"
  173.  END SELECT
  174. NEXT
  175. Hex2Bin$ = Out$
  176. END FUNCTION
  177.  
  178. FUNCTION TotalMem%
  179.  
  180. OUT &H70, &H15
  181. B% = INP(&H71)
  182. OUT &H70, &H16
  183. B1% = INP(&H71)
  184. a1% = CVI(CHR$(B) + CHR$(B1%))
  185. OUT &H70, &H17
  186. B% = INP(&H71)
  187. OUT &H70, &H18
  188. B1% = INP(&H71)
  189. a2% = CVI(CHR$(B) + CHR$(B1%))
  190. TotalMem% = a1% + a2%
  191. END FUNCTION
  192.  
  193.  
  194.